package zhieasy.cn.service.book_market;

import zhieasy.cn.common.vo.ResultVO;
import zhieasy.cn.model.book_market.BookAndUserBookDTO;
import zhieasy.cn.model.book_market.Book;
import zhieasy.cn.model.book_market.UserBook;

import java.util.List;
import java.util.Map;

/**
 * @author wangzeya
 * @create 2020-08-12 22:31:00
 */
public interface BookService {
    /**
     * 匹配图书 根据isbn号查找某一本书
     * @param isbn
     * @return
     */
     ResultVO<Book> matchBook(String isbn);

    /**
     * 发布图书
     * @param userBook
     * @return
     */
    ResultVO<Integer> putBook(UserBook userBook);

    /**
     * 修改已发布图书的信息
     *
     * @param ubid
     * @param userBook
     * @return
     */
    ResultVO<Integer> updateBook(String ubid ,UserBook userBook);

    /**
     * 下架图书
     * @param ub_id
     * @return
     */
    ResultVO<Integer> deleteBook(String ub_id);

    /**
     * 查看市场上图书
     * @param faction 出售还是借阅
     * @return
     */
    ResultVO<List<UserBook>> allBooks(String faction , int pageIndex , int pageSize);

    /**
     * 查看某个用户的某本书的详细信息（每访问一次点击量+1）
     * 根据ub_id号查找
     * @param ub_id
     * @return
     */
     ResultVO<UserBook> singleUserBook(String ub_id);

    /**
     * 图书推荐
     * @param isbn 图书号
     * @param ubId 图书id
     * @return ResultVO<BookAndUserBookDTO>
     */
    ResultVO<BookAndUserBookDTO> recommendBook(String isbn, String ubId);
    /**
     * 查看某种书的详细信息（分类）
     * 根据isbn号查找
     * @param isbn
     * @return
     */
    ResultVO<Book> singleBook(String isbn);
    /**
     * 查看我发布的图书
     * @param faction 出售还是借阅
     * @param open_id 用户id
     * @return
     */
    ResultVO< List<BookAndUserBookDTO>> myBook(String faction,String open_id, int pageIndex , int pageSize);
    /**
     * 搜索图书
     * 根据book_name号查找
     * @param book_name
     * @return
     */
    ResultVO<List<Book>> searchBook(String book_name , int pageIndex , int pageSize);

    /**
     * 查看某个分类的图书
     * @param classify 分类
     * @return
     */
    ResultVO<List<Book>> bookOfClass(String classify, int pageIndex , int pageSize);

    /**
     * 查看所有出售此书的人
     * @param isbn
     * @param pageIndex
     * @param pageSize
     * @return
     */
    ResultVO allSeller(String isbn,  int pageIndex , int pageSize);

    /**
     * 查看所有出租此书的人
     *
     * @param isbn
     * @param pageIndex
     * @param pageSize
     * @return
     */
    public ResultVO allBorrower(String isbn,  int pageIndex , int pageSize);
}
